import axios from "axios"
import Cookie from 'js-cookie';
import router from 'router/main.js';
import {
	Toast
} from 'vant';
// 创建axios 实例
const service = axios.create({
	baseURL: process.env.BASE_URL,
	timeout: 10000, // 请求超时时间
})
// request 拦截器
service.interceptors.request.use(
	config => {
		// 这里可以自定义一些config 配置
		const token = Cookie.get('token');
		if (token) {
			config.headers['x-token'] = token;
		}
		return config
	},
	error => {
		//  这里处理一些请求出错的情况
		Promise.reject(error)
	}
)

// response 拦截器
service.interceptors.response.use(
	response => {
		const res = response.data;
		console.log(res);
		if (res.code == '0000') {
			return res;
		} else {
			if (res.code == '0001') {
				Toast(res.message);
				console.log('登陆超时，跳转begin页,重新执行reload方法');
				router.replace('/begin');
				location.reload();// 为了重新实例化vue-router对象 避免bug
			} else{
				Toast(res.message);
			} 
			return Promise.reject('error');
		}
	},
	error => {
		// 可以根据后端返回的状态码进行不同的操作
		const responseCode = error.response.status
		switch (responseCode) {
			// 401：未登录
			case 401:
				// 跳转登录页
				Toast('401')
				break;
				// 403: token过期
			case 403:
				// 弹出错误信息
				Toast('403')
				break;
				// 404请求不存在
			case 404:
				Toast('网络请求不存在')
				break
				// 其他错误，直接抛出错误提示
			default:
				Toast(`error.response.data.message`)
		}
		return Promise.reject(error)
	}
)

export default service;
